﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using ProntuarioEletronicoMobile.Banco;
using ProntuarioEletronicoMobile.Repositorio;

namespace ProntuarioEletronicoMobile
{
    public partial class MainPage : PhoneApplicationPage
    {
        private const string strConnectionString = @"isostore:/MedicoDB.sdf";

        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        private void ContentPanel_Loaded(object sender, RoutedEventArgs e)
        {
            Criar_BD();
            MessageBox.Show("Não conseguimos conectar ao servidor. Por favor, verifique sua conexão de rede ou Wi-Fi e tente mais tarde!", "Oops. Ocorreu um problema!", MessageBoxButton.OK);
        }

        private void btEntrar_Click(object sender, RoutedEventArgs e)
        {
            if (txtUsuario.Text != "" && txtSenha.Password != "")
            {
                //Verificação pelo banco.
                Medico medico_logando = Login_Medico(txtUsuario.Text);

                if (medico_logando.UsuarioMedico == txtUsuario.Text && medico_logando.SenhaMedico == txtSenha.Password)
                {
                    if (Verifica_CRM(medico_logando.CrmMedico))
                    {
                        if (medico_logando.SexoMedico == 'M')
                        {
                            MessageBox.Show("Seja Bem Vindo Dr. " + medico_logando.NomeMedico + "!", "Sucesso!", MessageBoxButton.OK);
                        }
                        else
                        {
                            MessageBox.Show("Seja Bem Vinda Drª. " + medico_logando.NomeMedico + "!", "Sucesso!", MessageBoxButton.OK);
                        }

                        NavigationService.Navigate(new Uri("/Consulta.xaml", UriKind.Relative));
                    }
                    else
                    {
                        MessageBox.Show("O seu CRM está com situação inválida, por favor, entre em contato com o Conselho Federal de Medicina, para verificar essa situação.","CRM Inválido!", MessageBoxButton.OK);
                    }
                }
                else
                {
                    MessageBox.Show("Login e/ou Senha incorreto.\nPor favor tente novamente!", "Erro!", MessageBoxButton.OK);
                }
            }
            else
            {
                MessageBox.Show("Por favor preencha todos os campos e tente novamente!", "Erro!", MessageBoxButton.OK);
            }
        }

        public void Criar_BD()
        {
            using (MedicoDataContext medicos_bd = new MedicoDataContext(strConnectionString))
            {
                if (medicos_bd.DatabaseExists() == false)
                {
                    medicos_bd.CreateDatabase();
                    Inserir_Medicos();
                }
            }
        }

        public void Inserir_Medicos()
        {
            //Adicionando Médicos no Banco de Dados
            using (MedicoDataContext medicos_bd = new MedicoDataContext(strConnectionString))
            {
                Medico medico_admin = new Medico
                {
                    IDMedico = 0,
                    NomeMedico = "Médico Administrador",
                    SexoMedico = 'M',
                    DataNascMedico = "01/01/1982",
                    CpfMedico = "703.071.414-89",
                    EmailMedico = "admin@prontuarioeletronico.com.br",
                    CrmMedico = "0777",
                    UfcrmMedico = "PE",
                    DataInscricaocrmMedico = "01/12/2010",
                    EspecializacaoMedico = "Medicina Diagnóstica",
                    RgMedico = "1.453.098",
                    EmissorRgMedico = "SDS/PE",
                    TituloEleitorMedico = "1187 2309 3246 013 013",
                    UsuarioMedico = "admin",
                    SenhaMedico = "123456"
                };

                Medico medico1 = new Medico
                {
                    IDMedico = 1,
                    NomeMedico = "Gregory House",
                    SexoMedico = 'M',
                    DataNascMedico = "12/12/1977",
                    CpfMedico = "744.561.188-65",
                    EmailMedico = "houseMD@outlook.com",
                    CrmMedico = "12567",
                    UfcrmMedico = "SP",
                    DataInscricaocrmMedico = "01/10/1990",
                    EspecializacaoMedico = "Medicina Diagnóstica",
                    RgMedico = "6.879.122",
                    EmissorRgMedico = "SSP/SP",
                    TituloEleitorMedico = "1122 0987 1234 098 045",
                    UsuarioMedico = "housemd",
                    SenhaMedico = "ghouse"
                };

                Medico medico2 = new Medico
                {
                    IDMedico = 2,
                    NomeMedico = "Patch Adams",
                    SexoMedico = 'M',
                    DataNascMedico = "23/04/1980",
                    CpfMedico = "357.512.226-10",
                    EmailMedico = "patch_adams@gmail.com",
                    CrmMedico = "9356",
                    UfcrmMedico = "PE",
                    DataInscricaocrmMedico = "01/04/2008",
                    EspecializacaoMedico = "Clínica Médica, Hepatologia, GastroEnterologia",
                    RgMedico = "5.362.156",
                    EmissorRgMedico = "SDS/PE",
                    TituloEleitorMedico = "0987 5427 2936 032 076",
                    UsuarioMedico = "padams",
                    SenhaMedico = "p.adams"
                };

                //IList<Medico> ListaDeMedicos = null;
                //ListaDeMedicos.Add(medico1);
                //ListaDeMedicos.Add(medico2);
                //ListaDeMedicos.Add(medico_admin);

                //medicos_bd.Medicos.InsertAllOnSubmit(ListaDeMedicos);
                medicos_bd.Medicos.InsertOnSubmit(medico_admin);
                medicos_bd.Medicos.InsertOnSubmit(medico1);
                medicos_bd.Medicos.InsertOnSubmit(medico2);
                medicos_bd.SubmitChanges();
            }
        }

        public Medico Login_Medico(string usuario)
        {
            using (MedicoDataContext medicos_bd = new MedicoDataContext(strConnectionString))
            {

                IQueryable<Medico> medQuery = from Medico in medicos_bd.Medicos where Medico.UsuarioMedico == usuario select Medico;
                Medico medico_retornado = medQuery.FirstOrDefault();

                if (medico_retornado != null)
                {
                    return medico_retornado;
                }
                else
                {
                    return new Medico();
                }
            }
        }

        private void ApplicationBarMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Não conseguimos conectar ao servidor. Por favor, verifique sua conexão de rede ou Wi-Fi e tente mais tarde!", "Oops. Ocorreu um problema!", MessageBoxButton.OK);
        }

        private bool Verifica_CRM(string crm)
        {
            bool situacao = false;
            if (crm.Equals("12567") || crm.Equals("9356"))
            {
                situacao = false;
            }
            else
            {
                situacao = true;
            }
            return situacao;
        }
    }
}